ALMaSS  1.0
The Animal, Landscape and Man Simulation System
Partridge_Population_Manager.h
Go to the documentation of this file.
1 /*
2 *******************************************************************************************************
3 Copyright (c) 2011, Christopher John Topping, University of Aarhus
4 All rights reserved.
5 
6 Redistribution and use in source and binary forms, with or without modification, are permitted provided
7 that the following conditions are met:
8 
9 Redistributions of source code must retain the above copyright notice, this list of conditions and the
10 following disclaimer.
11 Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
12 the following disclaimer in the documentation and/or other materials provided with the distribution.
13 
14 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
15 IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
16 FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS
17 BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
18 BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
19 BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
20 LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
21 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
22 ********************************************************************************************************
23 */
37 //---------------------------------------------------------------------------
38 #ifndef Partridge_Population_ManagerH
39  #define Partridge_Population_ManagerH
40 //---------------------------------------------------------------------------
41 
42 
43 
44  #include <cmath>
45  #include <stdio.h>
46  #include <vector>
47 
48 #include "../BatchALMaSS/ALMaSS_Setup.h"
49 
50 #ifdef __UNIX
51  #include "../BatchALMaSS/PopulationManager.h"
52  #include "Partridge_Covey.h"
53  #include "Partridge_All.h"
54  #include "Partridge_Communication.h"
55 #else
56  #include "../BatchALMaSS/PopulationManager.h"
57  #include "Partridge_Covey.h"
58  #include "Partridge_All.h"
59  #include "Partridge_Communication.h"
60 #endif
61 
62 class Partridge_struct;
63 class Partridge_Covey;
66 
68 class CoverTempMap {
69  public:
70  ~CoverTempMap() { delete qualmap; }
71  CoverTempMap(int a_lx, int a_ly) { m_maxx = (a_lx / 10); m_maxy = (a_ly / 10); qualmap = new double[m_maxx*m_maxy]; };
72  double* qualmap;
73  int m_maxx, m_maxy;
74  void ZeroQual() { for (int i=0; i< m_maxx; i++) for (int j=0; j<m_maxy; j++) qualmap[i + j*m_maxx] = 0; }
75  double GetQual(int a_x, int a_y) { return qualmap[(a_x / 10) + m_maxx*(a_y / 10)]; }
76  void SetQual(int a_x, int a_y, double a_qual) { qualmap[(a_x / 10) + m_maxx*(a_y / 10)] = a_qual; }
77  void AddQual(int a_x, int a_y, double a_qual) { qualmap[(a_x / 10) + m_maxx*(a_y / 10)] += a_qual; }
78  double GetQualIndexed(int a_x, int a_y) { return qualmap[a_x + a_y * m_maxx]; }
79  void SetQualIndexed(int a_x, int a_y, double a_qual) {qualmap[a_x + a_y * m_maxx] = a_qual; }
80 };
81 
84  // double m_FoodNeed[200];
85  // double m_move_veg_structure[4][4];
87  virtual void DoFirst();
89  virtual void DoBefore();
91  virtual void DoAfter();
93  virtual void DoAlmostLast();
95  virtual void DoLast();
97  void TestShouldFlock();
99  void Hunting(int p_chance);
101  void HuntingGrid(int p_chance);
103  void HuntingDifferentiatedBeetleBankArea( int a_pct );
106 
107 
108  // For looping through bobjects of a certain type.
110  unsigned int m_loop_index;
112  unsigned int m_loop_limit;
116  unsigned int m_Partridge_IDs;
118  bool OpenParOutputFiles();
120  bool CloseParOutputFiles();
121  // Attributes
125  void FillInFoodArray();
130  // Output files
132  FILE * ParAdMort; //
134  FILE * ParJuvMort; //
136  FILE * ParNoB; //
138  FILE * ParClutches; //
140  FILE * ParFlocks; //
142  FILE * ParUnpairedMale; //
144  FILE * NoHatchedPerYear; //
145 
147  int HabitatEvalPolyField( int a_field );
149  double EvalHabitatQual(TTypesOfLandscapeElement a_cet, int a_poly);
151  double m_HabitatQuality[300];
153  virtual void Catastrophe();
155  void MaleImmigration( void );
156 
157 public:
172 /*
173  int m_Matured;
174  int m_Eaten;
175  int m_MaturedE;
176  int m_EatenE;
177 */
179  bool FillCoveyNeigbourList(Partridge_Covey* a_covey, int a_distance, int a_x, int a_y);
181  double TerrEvalPoly( TTypesOfLandscapeElement a_cet, int a_poly );
183  int ClutchDensity( int x, int y, int radius);
184 
186  void AddStarved() {
187  m_Starved++;
188  }
189 
190  /* void AddMatured() {
191  m_Matured++;
192  }
193 
194  void AddEaten() {
195  m_Eaten++;
196  }
197 
198  void AddMaturedE() {
199  m_MaturedE++;
200  }
201 
202  void AddEatenE() {
203  m_EatenE++;
204  }
205 */
206 
207  // void SetFoodNeed(int i, double value) {m_FoodNeed[i]=value;}
208  // double GetFoodNeed(int i) {return m_FoodNeed[i];}
209  // void SetMoveVegStructure(int i, int j, double value) {m_move_veg_structure[i][j]=value;}
210  // double GetMoveVegStructure(int i, int j) {return m_move_veg_structure[i][j];}
211 
213  void WriteParAdMort( int a_min, int a_age, int a_sex, int a_cause );
215  void WriteParJuvMort( int yr, int a_min, int a_age, int a_cause );
217  void WriteParNoB( int a_min, int a_nob );
219  void WriteParUnpairedMale( int a_min, int a_num );
221  void WriteParClutches( int a_min, int a_num1, int a_num2 );
223  void WriteParFlocks( int a_min, int a_size, int a_young );
225  void WriteNoHatchedPerYear( int a_min, int a_num );
226 
228  void AddHatchSuccess( int sz ) {
229  m_HatchSuccess += sz;
230  }
231 
233  int SupplyPegPosx( int j ) {
234  return dynamic_cast < Partridge_Covey * > ( TheArray[ pob_Covey ] [ j ] )->X();
235  };
236 
238  int SupplyPegPosy( int j ) {
239  return dynamic_cast < Partridge_Covey * > ( TheArray[ pob_Covey ] [ j ] )->Y();
240  };
241 
243  int SupplyCovPosx( int j ) {
244  return dynamic_cast < Partridge_Covey * > ( TheArray[ pob_Covey ] [ j ] )->XCenter();
245  };
246 
248  int SupplyCovPosy( int j ) {
249  return dynamic_cast < Partridge_Covey * > ( TheArray[ pob_Covey ] [ j ] )->YCenter();
250  };
251 
252 
254  void ObjectLoopInit( int ob_type );
256  TAnimal * ObjectLoopFetch( void );
257 
259  void CreateObjects( int ob_type, Partridge_struct * data, int number );
261  void CreateInitialObjects( int ob_type, int number );
263  void CreateCloneObjects( int ob_type, AdultPartridge_struct * as );
265  void AddObject( int ob_type, TAnimal * pTAo );
266 
268  virtual void Init( void );
272  virtual ~Partridge_Population_Manager( void );
273  // Interface
275  void UpdateNestingCoverMap();
277  double GetNestingCoverDensity( int x, int y );
279  double GetTerrQual( int x, int y );
281  unsigned int GetNewID() {
282  return ++m_Partridge_IDs;
283  }
284 
287  return m_ShouldFlock;
288  };
289 
291  void DissolveCovey( Partridge_Covey * a_covey );
293  bool CoveyDissolveWeather();
295  void DoSanityCheck(); // Is a de-bug method and can be removed at some point
297  void DoMaleSanityCheck(); // ditto
299  virtual void TheAOROutputProbe();
301  virtual void TheRipleysOutputProbe(FILE* a_prb);
302 
304  double GetHabitatQuality (int a_day) {return m_HabitatQuality[a_day];}
305 
306 };
307 
308 #endif
309 
Partridge_all.h This file contains the header for all partridge lifestage classes
@ pob_Covey
Definition: Partridge_All.h:297
Partridge_Communication.h This file contains the headers for the partridge communication class
Partridge_Covey.h This file contains the headers for the partridge covey class
Struct to pass adult partridge information.
Definition: Partridge_All.h:386
For storing assessed habitat quality.
Definition: Partridge_Population_Manager.h:68
void AddQual(int a_x, int a_y, double a_qual)
Definition: Partridge_Population_Manager.h:77
int m_maxx
Definition: Partridge_Population_Manager.h:73
void SetQualIndexed(int a_x, int a_y, double a_qual)
Definition: Partridge_Population_Manager.h:79
CoverTempMap(int a_lx, int a_ly)
Definition: Partridge_Population_Manager.h:71
void SetQual(int a_x, int a_y, double a_qual)
Definition: Partridge_Population_Manager.h:76
double GetQualIndexed(int a_x, int a_y)
Definition: Partridge_Population_Manager.h:78
~CoverTempMap()
Definition: Partridge_Population_Manager.h:70
int m_maxy
Definition: Partridge_Population_Manager.h:73
void ZeroQual()
Definition: Partridge_Population_Manager.h:74
double * qualmap
Definition: Partridge_Population_Manager.h:71
double GetQual(int a_x, int a_y)
Definition: Partridge_Population_Manager.h:75
The landscape class containing all environmental and topographical data.
Definition: landscape.h:113
Used for messaging.
Definition: Partridge_Communication.h:100
The collective for a family of partridges
Definition: Partridge_Covey.h:90
The partridge male class.
Definition: Partridge_All.h:657
The population manager for partridge objects.
Definition: Partridge_Population_Manager.h:83
CoverTempMap * m_territoryqualmap
Pointer to territory quality map.
Definition: Partridge_Population_Manager.h:165
TAnimal * ObjectLoopFetch(void)
Definition: Partridge_Population_Manager.cpp:196
void AddHatchSuccess(int sz)
Definition: Partridge_Population_Manager.h:228
bool FillCoveyNeigbourList(Partridge_Covey *a_covey, int a_distance, int a_x, int a_y)
Get a list of neighbour covies.
Definition: Partridge_Population_Manager.cpp:1571
void WriteParAdMort(int a_min, int a_age, int a_sex, int a_cause)
Output method.
Definition: Partridge_Population_Manager.cpp:1658
int ClutchDensity(int x, int y, int radius)
Returns clutch density at x,y with radius radius.
Definition: Partridge_Population_Manager.cpp:569
void Hunting(int p_chance)
Global hunting.
Definition: Partridge_Population_Manager.cpp:1116
int HabitatEvalPolyField(int a_field)
Part of habitat quality map evaluation.
Definition: Partridge_Population_Manager.cpp:943
void WriteParNoB(int a_min, int a_nob)
Output method.
Definition: Partridge_Population_Manager.cpp:1670
void CreateNestingCoverDensityMap()
Intitialises the nesting cover map.
Definition: Partridge_Population_Manager.cpp:778
FILE * NoHatchedPerYear
No. successful hatches per year.
Definition: Partridge_Population_Manager.h:144
void CreateInitialObjects(int ob_type, int number)
Definition: Partridge_Population_Manager.cpp:465
unsigned int m_loop_index
Definition: Partridge_Population_Manager.h:110
virtual void DoBefore()
Utility method called before Step.
Definition: Partridge_Population_Manager.cpp:1297
bool OpenParOutputFiles()
Opens the partridge output files.
Definition: Partridge_Population_Manager.cpp:1612
FILE * ParUnpairedMale
No unparied males 1st Jun.
Definition: Partridge_Population_Manager.h:142
int m_halfwidth
Definition: Partridge_Population_Manager.h:129
FILE * ParNoB
No of breeding Pairs.
Definition: Partridge_Population_Manager.h:136
void WriteNoHatchedPerYear(int a_min, int a_num)
Output method.
Definition: Partridge_Population_Manager.cpp:1696
void DoSanityCheck()
Debug only.
Definition: Partridge_Population_Manager.cpp:1252
void AddObject(int ob_type, TAnimal *pTAo)
Definition: Partridge_Population_Manager.cpp:457
void WriteParFlocks(int a_min, int a_size, int a_young)
Output method.
Definition: Partridge_Population_Manager.cpp:1688
int SupplyPegPosy(int j)
Definition: Partridge_Population_Manager.h:238
virtual void DoFirst()
Utility method called before BeginStep.
Definition: Partridge_Population_Manager.cpp:590
double EvalHabitatQual(TTypesOfLandscapeElement a_cet, int a_poly)
Part of habitat quality map evaluation.
Definition: Partridge_Population_Manager.cpp:837
int SupplyPegPosx(int j)
Definition: Partridge_Population_Manager.h:233
k_factors * m_Ourkfactors
Pointer to kfactors object.
Definition: Partridge_Population_Manager.h:169
virtual void Init(void)
Definition: Partridge_Population_Manager.cpp:207
int SupplyCovPosy(int j)
Definition: Partridge_Population_Manager.h:248
bool CloseParOutputFiles()
Closes the partridge output files.
Definition: Partridge_Population_Manager.cpp:1631
void DoMaleSanityCheck()
Debug only.
Definition: Partridge_Population_Manager.cpp:1274
void CreateCloneObjects(int ob_type, AdultPartridge_struct *as)
Definition: Partridge_Population_Manager.cpp:535
FILE * ParClutches
For each clutch, clutch no. & size.
Definition: Partridge_Population_Manager.h:138
void DissolveCovey(Partridge_Covey *a_covey)
Definition: Partridge_Population_Manager.cpp:1475
void ObjectLoopInit(int ob_type)
Definition: Partridge_Population_Manager.cpp:187
void HuntingGrid(int p_chance)
Density grid-based hunting.
Definition: Partridge_Population_Manager.cpp:1159
FILE * ParJuvMort
Juvenile mortaltiy record.
Definition: Partridge_Population_Manager.h:134
double m_HabitatQuality[300]
Part of habitat quality map evaluation.
Definition: Partridge_Population_Manager.h:151
int m_maxy
Definition: Partridge_Population_Manager.h:129
double GetTerrQual(int x, int y)
Definition: Partridge_Population_Manager.cpp:766
void WriteParUnpairedMale(int a_min, int a_num)
Output method.
Definition: Partridge_Population_Manager.cpp:1676
FILE * ParFlocks
Covey size 1st oct, + no. chicks.
Definition: Partridge_Population_Manager.h:140
void WriteParClutches(int a_min, int a_num1, int a_num2)
Output method.
Definition: Partridge_Population_Manager.cpp:1682
void UpdateNestingCoverMap()
Definition: Partridge_Population_Manager.cpp:1084
double TerrEvalPoly(TTypesOfLandscapeElement a_cet, int a_poly)
Habitat evaluation.
int m_loop_ob_type
Definition: Partridge_Population_Manager.h:114
Partridge_Communication m_messagecentre
Message class pointer.
Definition: Partridge_Population_Manager.h:163
double GetHabitatQuality(int a_day)
Definition: Partridge_Population_Manager.h:304
bool CoveyDissolveWeather()
Definition: Partridge_Population_Manager.cpp:1422
void HuntingDifferentiatedBeetleBankArea(int a_pct)
Differentiated hunting in beetlebank areas.
Definition: Partridge_Population_Manager.cpp:1204
void AddStarved()
Record starvation event.
Definition: Partridge_Population_Manager.h:186
void MaleImmigration(void)
If male immigration is needed - Unused.
Definition: Partridge_Population_Manager.cpp:1813
CoverTempMap * m_nestingcovermap
Pointer to nesting cover map.
Definition: Partridge_Population_Manager.h:167
unsigned int GetNewID()
Definition: Partridge_Population_Manager.h:281
virtual ~Partridge_Population_Manager(void)
Definition: Partridge_Population_Manager.cpp:177
virtual void TheAOROutputProbe()
Output method.
Definition: Partridge_Population_Manager.cpp:1705
virtual void DoAfter()
Utility method called before EndStep.
Definition: Partridge_Population_Manager.cpp:1307
int m_HatchSuccess
No hatch success.
Definition: Partridge_Population_Manager.h:127
bool m_ShouldFlock
Flag for flocking or not.
Definition: Partridge_Population_Manager.h:123
FILE * ParAdMort
Adult mortality record.
Definition: Partridge_Population_Manager.h:132
virtual void DoLast()
Ultility method called at the end of the time-step.
Definition: Partridge_Population_Manager.cpp:1326
double GetNestingCoverDensity(int x, int y)
Definition: Partridge_Population_Manager.cpp:754
Partridge_Population_Manager(Landscape *a_map)
Definition: Partridge_Population_Manager.cpp:156
virtual void TheRipleysOutputProbe(FILE *a_prb)
Output method.
Definition: Partridge_Population_Manager.cpp:1713
Partridge_Male * bad_guys[500]
Debug.
Definition: Partridge_Population_Manager.h:159
unsigned int m_loop_limit
Definition: Partridge_Population_Manager.h:112
int m_maxx
internal variables
Definition: Partridge_Population_Manager.h:129
unsigned int m_Partridge_IDs
Definition: Partridge_Population_Manager.h:116
virtual void Catastrophe()
Kill/clone a configuragle proportion of population.
Definition: Partridge_Population_Manager.cpp:1731
virtual void DoAlmostLast()
Utility method called after EndStep.
Definition: Partridge_Population_Manager.cpp:1335
int SupplyCovPosx(int j)
Definition: Partridge_Population_Manager.h:243
void FillInFoodArray()
Precalculated food values with age.
Definition: Partridge_Population_Manager.cpp:1390
bool SupplyShouldFlock()
Definition: Partridge_Population_Manager.h:286
void CreateObjects(int ob_type, Partridge_struct *data, int number)
Definition: Partridge_Population_Manager.cpp:368
int m_Starved
No starvation events.
Definition: Partridge_Population_Manager.h:171
void TestShouldFlock()
Should the birds start to flock?
Definition: Partridge_Population_Manager.cpp:1435
PartridgeCommunicationData * m_comms_data
Message data.
Definition: Partridge_Population_Manager.h:161
void WriteParJuvMort(int yr, int a_min, int a_age, int a_cause)
Output method.
Definition: Partridge_Population_Manager.cpp:1664
Struct to basic partridge information.
Definition: Partridge_All.h:342
Base class for all population managers.
Definition: PopulationManager.h:424
vector< TListOfAnimals > TheArray
Definition: PopulationManager.h:534
The base class for all ALMaSS animal classes.
Definition: PopulationManager.h:205
Class for calculating k-factors.
Definition: Partridge_All.h:235
Data structure of a message.
Definition: Partridge_Communication.h:78
TTypesOfLandscapeElement
Definition: tole_declaration.h:36